//法三：三步旋转法   时间O(N)  空间O(1)
void reverse(int* nums, int left, int right)
{
    while (left < right)
    {
        int tmp = nums[left];
        nums[left] = nums[right];
        nums[right] = tmp;
        left++;
        right--;
    }
}
void rotate(int* nums, int numsSize, int k) {
    k %= numsSize;
    reverse(nums, numsSize - k, numsSize - 1); // 1 旋转右部分
    reverse(nums, 0, numsSize - k - 1); // 2 旋转左部分
    reverse(nums, 0, numsSize - 1); // 3 整体旋转
}